# 运算符案例

# 1. 算术运算符（Arithmetic Operators）
x = 10
y = 5

# 加法
addition = x + y
print(f"x + y = {addition}")

# 减法
subtraction = x - y
print(f"x - y = {subtraction}")

# 乘法
multiplication = x * y
print(f"x * y = {multiplication}")

# 除法（浮点数除法）
division = x / y
print(f"x / y = {division}")

# 地板除（取整除）
floor_division = x // y
print(f"x // y = {floor_division}")

# 取余（模运算）
modulus = x % y
print(f"x % y = {modulus}")

# 幂运算
exponentiation = x ** y
print(f"x ** y = {exponentiation}")

# 2. 比较运算符（Comparison Operators）
a = 15
b = 10

# 等于
equal = a == b
print(f"a == b: {equal}")

# 不等于
not_equal = a != b
print(f"a != b: {not_equal}")

# 大于
greater_than = a > b
print(f"a > b: {greater_than}")

# 小于
less_than = a < b
print(f"a < b: {less_than}")

# 大于等于
greater_than_or_equal = a >= b
print(f"a >= b: {greater_than_or_equal}")

# 小于等于
less_than_or_equal = a <= b
print(f"a <= b: {less_than_or_equal}")

# 3. 逻辑运算符（Logical Operators）
# and、or、not

x = True
y = False

# 与运算
and_operation = x and y
print(f"x and y: {and_operation}")

# 或运算
or_operation = x or y
print(f"x or y: {or_operation}")

# 非运算
not_operation = not x
print(f"not x: {not_operation}")

# 4. 赋值运算符（Assignment Operators）
z = 10

# 简单赋值
z = z + 5
print(f"z = z + 5: {z}")

# 加法赋值
z += 5
print(f"z += 5: {z}")

# 减法赋值
z -= 3
print(f"z -= 3: {z}")

# 乘法赋值
z *= 2
print(f"z *= 2: {z}")

# 除法赋值
z /= 4
print(f"z /= 4: {z}")

# 地板除赋值
z //= 2
print(f"z //= 2: {z}")

# 取余赋值
z %= 3
print(f"z %= 3: {z}")

# 幂赋值
z **= 2
print(f"z **= 2: {z}")

# 5. 位运算符（Bitwise Operators）
x = 10  # 二进制: 1010
y = 4   # 二进制: 0100

# 按位与
bitwise_and = x & y
print(f"x & y: {bitwise_and} (二进制: {bin(bitwise_and)})")

# 按位或
bitwise_or = x | y
print(f"x | y: {bitwise_or} (二进制: {bin(bitwise_or)})")

# 按位异或
bitwise_xor = x ^ y
print(f"x ^ y: {bitwise_xor} (二进制: {bin(bitwise_xor)})")

# 按位非
bitwise_not = ~x
print(f"~x: {bitwise_not} (二进制: {bin(bitwise_not)})")

# 左移
left_shift = x << 2
print(f"x << 2: {left_shift} (二进制: {bin(left_shift)})")

# 右移
right_shift = x >> 2
print(f"x >> 2: {right_shift} (二进制: {bin(right_shift)})")

# 6. 成员运算符（Membership Operators）
my_list = [1, 2, 3, 4, 5]

# in 运算符
in_operation = 3 in my_list
print(f"3 in my_list: {in_operation}")

# not in 运算符
not_in_operation = 6 not in my_list
print(f"6 not in my_list: {not_in_operation}")

# 7. 身份运算符（Identity Operators）
x = [1, 2, 3]
y = x
z = [1, 2, 3]

# is 运算符
is_operation = x is y
print(f"x is y: {is_operation}")

# is not 运算符
is_not_operation = x is not z
print(f"x is not z: {is_not_operation}")

# 代码讲解：
# 1. 算术运算符：包括加法 (+)、减法 (-)、乘法 (*)、除法 (/)、地板除 (//)、取余 (%)、幂运算 (**)。
#   ○ 这些运算符可以对数值类型（整数和浮点数）进行常见的数学运算。
# 2. 比较运算符：用于比较两个值的大小关系，返回布尔值（True 或 False）。
#   ○ ==、!=、>、<、>=、<=。
# 3. 逻辑运算符：包括 and、or、not，用于布尔值的逻辑操作。
#   ○ and 返回 True 当且仅当两个操作数都为 True；or 只要有一个操作数为 True 就返回 True；not 用来取反布尔值。
# 4. 赋值运算符：用于给变量赋值，常用的如 =, +=, -=, *=, /=, //=, %= 等。
#   ○ 这些运算符允许在给变量赋值的同时进行计算。
# 5. 位运算符：用于二进制位操作，适用于整数。
#   ○ &、|、^、~、<<、>> 分别表示按位与、按位或、按位异或、按位非、左移、右移。
# 6. 成员运算符：用于判断某个元素是否存在于容器中（如列表、元组、字典、集合等）。
#   ○ in 和 not in 用于检查元素是否存在。
# 7. 身份运算符：用于判断两个对象是否是同一个对象（即内存中的同一个对象）。
#   ○ is 和 is not 判断两个对象的身份是否相同或不同。